home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / COMPILER / SATHER / !Sather / Library / IO / sa / str_stream < prev    next >
Text File  |  1996-04-09  |  2KB  |  48 lines

  1. ---------------------------> Sather 1.1 source file <--------------------------
  2. -- Author: Benedict A. Gomes <gomes@samosa.ICSI.Berkeley.EDU>
  3. -- Copyright (C) 1995, International Computer Science Institute
  4. -- $Id: str_stream.sa,v 1.2 1996/04/09 10:05:57 borisv Exp $
  5. --
  6. -- COPYRIGHT NOTICE: This code is provided WITHOUT ANY WARRANTY
  7. -- and is subject to the terms of the SATHER LIBRARY GENERAL PUBLIC
  8. -- LICENSE contained in the file: Sather/Doc/License of the
  9. -- Sather distribution. The license is also available from ICSI,
  10. -- 1947 Center St., Suite 600, Berkeley CA 94704, USA.
  11. -------------------------------------------------------------------
  12. class STR_STREAM < $OSTREAM, $STR is
  13.    -- An output stream that writes out to a string (an FSTR, for
  14.    -- efficiency). Very similar to a file.
  15.    -- 
  16.    -- Usage:
  17.    --    write_to_stream(o: $OUTSTREAM) is
  18.    --        o + "this is a test";
  19.    --    end;
  20.    --    Which can be invoked using:
  21.    --     s: STR_STREAM := #;
  22.    --     write_to_stream(s);
  23.    --     write_to_stream(s);
  24.    --     s.str then would have two copies of "this is a test" in it.
  25.  
  26.    private attr f: FSTR;
  27.    
  28.    create: SAME is
  29.       -- Create a new stream
  30.       res ::= new;
  31.       res.f := #FSTR("");
  32.       return res;
  33.    end;
  34.    
  35.    plus(s: $STR): SAME is
  36.       -- Append the string "s" to self
  37.       f := f+s.str;
  38.       return self;
  39.    end;
  40.  
  41.    plus(s: $STR) is discard ::= plus(s) end;
  42.    
  43.    str: STR is     return f.str;  end;
  44.  
  45. end; -- class STR_STREAM
  46. -------------------------------------------------------------------
  47.  
  48.